package com.itheima.ui;

import javax.swing.*;
import javax.swing.border.BevelBorder;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.util.Objects;
import java.util.Random;

public class GameJFrame extends JFrame implements KeyListener {
    // 表示游戏的主界面
    // 加载图片的时候，根据二维数组存的数据进行加载对应的拼图
    int[][] data = new int[5][5];

    public GameJFrame(){
        //初始化界面
        initJFrame();
        //初始化菜单
        initMenu();
        //初始化数据
        initData();
        //初始化图片
        initImage();
        this.setVisible(true);


    }

    private void initData() {
        // 把一个一维数组中的数据0-24的数据打乱顺序，然后按照5个一行的方式添加到二维数据中
        int[] tempArr = new int[25];
        for (int i = 0; i < tempArr.length; i++) {
            tempArr[i] = i;
        }
        Random r = new Random();
        for (int i = 0; i < tempArr.length; i++) {
            int index = r.nextInt(tempArr.length);
            int temp = tempArr[i];
            tempArr[i] = tempArr[index];
            tempArr[index] = temp;
        }
        // 遍历数组验证
        for (int i = 0; i < tempArr.length; i++) {
            System.out.print(tempArr[i] + " ");
        }
        System.out.println();
        for (int i = 0; i < tempArr.length; i++) {
            data[i / 5][i % 5] = tempArr[i];
        }
        for (int i = 0; i < data.length; i++) {
            for(int j =0; j < data[i].length; j++) {
                System.out.print(data[i][j] + " ");
            }
            System.out.println();
        }
    }
    private void initImage() {
        //创建一个ImageIcon对象
        for (int i = 0; i < data.length; i++) {
            for (int j = 0; j < data[i].length; j++) {
                int num = data[i][j] + 1;
                ImageIcon icon = new ImageIcon("images\\拼图游戏切图模型_" + (num < 10 ? "0" : "") + num + ".png");
                //创建一个JLabel对象
                JLabel jLabel = new JLabel(icon);
                //指定容器位置
                jLabel.setBounds(j * 105 + 30, i * 105 + 80, 105, 105);
                jLabel.setBorder(new BevelBorder(1));
                this.getContentPane().add(jLabel);
            }
        }
        ImageIcon bgIcon = new ImageIcon("images\\texture.png");
        JLabel bg = new JLabel(bgIcon);
        bg.setBounds(0, 0, 603, 680 );
        this.getContentPane().add(bg);

    }
    private void initMenu() {
        //创建整个菜单对象JMenuBar
        JMenuBar jMenuBar = new JMenuBar();
        //创建菜单项
        JMenu functionJMenu = new JMenu("功能");
        JMenu aboutJMenu = new JMenu("关于我们");
        //创建菜单项下的每一个选项
        JMenuItem replayItem = new JMenuItem("重新游戏");
        JMenuItem reLoginItem = new JMenuItem("重新登陆");
        JMenuItem closeItem = new JMenuItem("关闭游戏");

        JMenuItem accoutItem = new JMenuItem("公众号");

        functionJMenu.add(replayItem);
        functionJMenu.add(reLoginItem);
        functionJMenu.add(closeItem);
        aboutJMenu.add(accoutItem);
        jMenuBar.add(functionJMenu);
        jMenuBar.add(aboutJMenu);

        //给整个界面设置菜单
        this.setJMenuBar(jMenuBar);
    }

    private void initJFrame() {
        this.setSize(603, 680);
        //设置界面标题
        this.setTitle("拼图单机版 V1.0");
        //设置窗口置顶
        this.setAlwaysOnTop(true);
        this.setLocationRelativeTo(null);
        //设置默认关闭模式
        this.setDefaultCloseOperation(3);
        //取消默认的居中对齐的布局方式
        this.setLayout(null);
        //给整个界面添加键盘监听事件
        this.addKeyListener(this);

    }

    @Override
    public void keyTyped(KeyEvent e) {

    }

    @Override
    public void keyPressed(KeyEvent e) {

    }

    @Override
    public void keyReleased(KeyEvent e) {

    }
}
